<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <script>
      // 一、
      // 全局有个a a = 123
      function fn1(a, b) {
        // OA = {
        //   b: undefined,
        //   a: function a() {},
        // };
        console.log(a); // 1
        console.log(b); // undefined
        var b = 234;
        console.log(b); //234
        // a = 123;
        console.log(a); // 1

        //function a() {}
        var a;
        b = 234;
        var b = function () {};
        console.log(a); // 1
        console.log(b); // function () {};
      }
      fn1(1);

      // 二、
      // GO={
      //   a:100
      // }
      a = 100;

      function fn2(e) {
        // OA = {
        //   b: undefined,
        //   c: undefined,
        //   a: undefined,
        //   e: function e() {},
        // };
        function e() {}
        arguments[0] = 2;
        console.log(e); //2
        if (a) {
          var b = 123;
        }
        var c;
        a = 10;
        var a;
        console.log(b); //undefined
        f = 123;
        console.log(c); //undefined
        console.log(a); //10
      }
      var a;
      fn2(1);
      console.log(a); // 100
      console.log(f); // 123

      // 三、
      // GO={
      //   global:100,
      // }
      global = 100;
      function fn3(global) {
        // OA={
        //   global:100
        // }
        // console.log(global);//100
        global = 200;
        console.log(global); //200
        var global = 300;
      }

      fn3(global);
      var global;

      // 四、
      // GO={
      //   b:10
      //   d:100
      // }
      function fn4(a) {
        OA = {
          d: undefined,
          c: function c() {},
          a: function a() {},
        };
        var d;
        var c;
        b = 10;
        var a;
        console.log(a); // a函数
        a = 123;

        function a() {}
        console.log(a); //123
        var b;
        console.log(b); //10

        function c() {}
        console.log(c); //c函数
        console.log(d); //undefined
        d = 100;
        console.log(d); //100
      }
      fn4(5);

      // 五、
      let obj = {
        a: 110,
        fn: function (a) {
          console.log(a); //110
          a = 10;
          console.log(a); //10
        },
      };

      obj.fn(obj.a);

      // 六、
      // 1,1,2,3,5,8,13,.....
      // 求第n项的和, 例子: 求第三项的和, 1 + 1 + 2
      function fb(n) {
        if (n === 1 || n === 2) return 1;
        //第n项是n-1和n-2之和
        return fb(n - 1) + fb(n - 2);
      }

      function sumFn(n) {
        switch (n) {
          case 1:
            return 1;
            break;
          case 2:
            return 2;
            break;
          default:
            return fb(n) + sumFn(n - 1);
        }
      }
      console.log(sumFn(5));
      // 前五项和= 第五项+前四项和

      console.log('_________________________________');
      // 七、
      // 要求输入id 返回数据对象
      // 例如: 输入id=111, 返回{id: 111,gname: '海尔冰箱'}
      var data = [
        {
          id: 1,
          name: '家电',
          goods: [
            {
              id: 11,
              gname: '冰箱',
              goods: [
                {
                  id: 111,
                  gname: '海尔冰箱',
                },
                {
                  id: 112,
                  gname: '小天鹅冰箱',
                },
              ],
            },
            {
              id: 12,
              gname: '洗衣机',
            },
          ],
        },
        {
          id: 2,
          name: '服饰',
        },
      ];

      function fnId(arr, id) {
        // 判断是否为数组
        if ((!arr) instanceof Array) {
          return null;
        }
        //遍历数组
        for (let i = 0; i < arr.length; i++) {
          if (arr[i].id == id) {
            return arr[i];
          } else {
            //判断是否存在goods
            if (arr[i].goods) {
              return fnId(arr[i].goods, id);
            }
          }
        }
      }
      console.log(fnId(data, 11));
    </script>
  </body>
</html>
